                ; WARD CHRISTENSON'S FMAP FROM CP/M UG VOL 8
                ; MODIFIED BY TREVOR MARSHALL
                ;		UNI W A
                ;		DEPT ELEC ENG
                ; TO REFLECT HIS MODIFICATIONS ON THE 
                ;    CACHE T7 DISK
                ; AND TO ALLOW COMPATIBILITY WITH CDOS
                ;    (UP TO 512 ENTRIES)
                ;
 0100           	ORG	100H
                ;	JMP	START	;SKIP PROGRAM ID
 0100 CD1C01    	CALL	START
 0103 43444F5320ID:	DB	'CDOS 2.35 FMAP Sept 80',0DH,0AH,'$' 
                ;SORTED DIRECTORY MAP PROGRAM
                ;WITH OPTION OF WRITING FILE OF NAMES
                ;
                ;FMAP FN.FT OR JUST MAP
                ;FMAP FN.FT F   TO WRITE A FILE
                ;ALLOWS '*' OR '?' TYPE SPECIFICATIONS
 005C =         FCB	EQU	5CH	;SYSTEM FCB
                ;SAVE THE STACK
 011C D1        START	POP	D
 011D 0E09      	MVI	C,9
 011F CD0500    	CALL	BDOS
 0122 210000    	LXI	H,0
 0125 39        	DAD	SP	;H=STACK
 0126 227204    	SHLD	STACK	;SAVE IT
 0129 317204    	LXI	SP,STACK ;GET NEW STACK
                ;SAVE FILE WRITE REQUEST CHAR
 012C 3A6D00    	LDA	FCB+17
 012F 327B04    	STA	FILESW
                ;NO FCB SPECIFIED?
 0132 215D00    	LXI	H,FCB+1
 0135 7E        	MOV	A,M
 0136 FE20      	CPI	' '
 0138 C24401    	JNZ	GOTFCB
                ;NO FCB - MAKE FCB ALL '?'
 013B 060B      	MVI	B,11	;FN+FT COUNT
 013D 363F      QLOOP	MVI	M,'?'	;STORE '?' IN FCB
 013F 23        	INX	H
 0140 05        	DCR	B
 0141 C23D01    	JNZ	QLOOP
                ;MOD #2
 0144 3E3F      GOTFCB	MVI	A,'?'
 0146 326800    	STA	68H
                ;LOOK UP THE FCB IN THE DIRECTORY
 0149 0E11      	MVI	C,FSRCHF ;GET 'SEARCH FIRST' FNC
 014B 115C00    	LXI	D,FCB
 014E CD0500    	CALL	BDOS	;READ FIRST
 0151 3C        	INR	A	;WERE THERE ANY?
 0152 32BA03    	STA	TEMP	;SAVE
 0155 C27A01    	JNZ	PRTTL1	;GOT SOME - PRT TITLE, CONT
 0158 116101    	LXI	D,NONMSG
 015B CD7003    	CALL	WRCON
 015E C3C603    	JMP	EXIT
 0161 2A2A2A204ENONMSG	DB	'*** No Entries Found ***$'
                ; MOD #3
 017A 3A7B04    PRTTL1	LDA	FILESW
 017D FE51      	CPI	'Q'
 017F CA9501    	JZ	JMP1
 0182 FE44      	CPI	'D'
 0184 CA9501    	JZ	JMP1
 0187 FE4D      	CPI	'M'
 0189 CA9501    	JZ	JMP1
                ;PRINT TITLE
 018C 119B01    PRTTL	LXI	D,TTL
 018F CD7003    	CALL	WRCON
 0192 CDAF03    	CALL	CR
 0195 3ABA03    JMP1:	LDA	TEMP	;RELOAD EXTENT
 0198 C3CB01    	JMP	SOME
 019B 46494C454ETTL	DB	'FILENAME TYP EX RC -----EXTENT-----$'
                ;READ MORE DIRECTORY ENTRIES
 01BF 0E12      MOREDIR	MVI	C,FSRCHN ;SEARCH NEXT
 01C1 115C00    	LXI	D,FCB
 01C4 CD0500    	CALL	BDOS	;READ DIR ENTRY
 01C7 3C        	INR	A	;CHECK FOR END (0FFH)
 01C8 CAF301    	JZ	SPRINT	;NO MORE - SORT & PRINT
                ;POINT TO DIRECTORY ENTRY 
 01CB 3D        SOME	DCR	A	;UNDO PREV 'INR A'
 01CC E603      	ANI	3	;MAKE MODULUS 4
 01CE 87        	ADD	A	;MULTIPLY...
 01CF 87        	ADD	A	;..BY 32 BECAUSE
 01D0 87        	ADD	A	;..EACH DIRECTORY
 01D1 87        	ADD	A	;..ENTRY IS 32
 01D2 87        	ADD	A	;..BYTES LONG
 01D3 218100    	LXI	H,81H	;POINT TO BUFFER
                			;(SKIP TO FN/FT)
 01D6 85        	ADD	L	;POINT TO ENTRY
 01D7 6F        	MOV	L,A	;SAVE (CAN'T CARRY TO H)
                ;MOVE ENTRY TO TABLE
 01D8 EB        	XCHG		;ENTRY TO DE
 01D9 2A7504    	LHLD	NEXTT	;NEXT TABLE ENTRY TO HL
 01DC 061F      	MVI	B,31	;ENTRY LENGTH
 01DE 1A        TMOVE	LDAX	D	;GET ENTRY CHAR
 01DF 77        	MOV	M,A	;STORE IN TABLE
 01E0 13        	INX	D
 01E1 23        	INX	H
 01E2 05        	DCR	B	;MORE?
 01E3 C2DE01    	JNZ	TMOVE
 01E6 227504    	SHLD	NEXTT	;SAVE UPDATED TABLE ADDR
 01E9 3A7804    	LDA	COUNT	;GET PREV COUNT
 01EC 3C        	INR	A
 01ED 327804    	STA	COUNT
 01F0 C3BF01    	JMP	MOREDIR
                ;SORT AND PRINT
 01F3 3A7804    SPRINT	LDA	COUNT	;INIT THE ORDER TABLE
 01F6 219F04    	LXI	H,ORDER
 01F9 119F08    	LXI	D,TABLE
 01FC 011F00    	LXI	B,31	;ENTRY LENGTH
 01FF 73        BLDORD	MOV	M,E	;SAVE LO ORD ADDR
 0200 23        	INX	H
 0201 72        	MOV	M,D	;SAVE HI ORD ADDR
 0202 23        	INX	H
 0203 EB        	XCHG		;TABLE ADDR TO HL
 0204 09        	DAD	B	;POINT TO NEXT ENTRY
 0205 EB        	XCHG
 0206 3D        	DCR	A	;MORE?
 0207 C2FF01    	JNZ	BLDORD	;..YES
 020A 3A7804    	LDA	COUNT	;GET COUNT
 020D 327904    	STA	SCOUNT	;SAVE AS # TO SORT
 0210 3D        	DCR	A	;ONLY 1 ENTRY?
 0211 CA4102    	JZ	DONE	;..YES, SO SKIP SORT
 0214 AF        SORT	XRA	A	;GET A ZERO
 0215 327A04    	STA	SWITCH	;SHOW NONE SWITCHED
 0218 3A7904    	LDA	SCOUNT	;GET COUNT
 021B 3D        	DCR	A	;USE 1 LESS
 021C 32BA03    	STA	TEMP	;SAVE # TO COMPARE
 021F 327904    	STA	SCOUNT	;SAVE HIGHEST ENTRY
 0222 CA4102    	JZ	DONE	;EXIT IF NO MORE
 0225 219F04    	LXI	H,ORDER ;POINT TO ORDER TABLE
 0228 CD2E04    SORTLP	CALL	COMPR	;COMPARE 2 ENTRIES
 022B FC4004    	CM	SWAP	;SWAP IF NOT IN ORDER
 022E 23        	INX	H	;BUMP ORDER
 022F 23        	INX	H	;..TABLE POINTER
 0230 3ABA03    	LDA	TEMP	;GET COUNT
 0233 3D        	DCR	A
 0234 32BA03    	STA	TEMP
 0237 C22802    	JNZ	SORTLP	;CONTINUE
                ;ONE PASS OF SORT DONE
 023A 3A7A04    	LDA	SWITCH	;ANY SWAPS DONE?
 023D B7        	ORA	A
 023E C21402    	JNZ	SORT
                ;SORT IS ALL DONE - PRINT ENTRIES
 0241 219F04    DONE	LXI	H,ORDER
 0244 227504    	SHLD	NEXTT
                ; MOD #4
 0247 3A7B04    	LDA	FILESW
 024A FE20      	CPI	' '
 024C CA7802    	JZ	ENTRY
                ;IF WRITING A FILE, OPEN THE FILE
                ;	LDA	FILESW
                ;	CPI	'F'
                ;	JNZ	ENTRY
 024F 117E04    	LXI	D,MYFCB
 0252 0E13      	MVI	C,ERASE
 0254 CD0500    	CALL	BDOS
 0257 117E04    	LXI	D,MYFCB
 025A 0E16      	MVI	C,FMAKE	;MAKE THE FILE
 025C CD0500    	CALL	BDOS
 025F 3C        	INR	A
 0260 C27802    	JNZ	ENTRY
                ;MAKE ERROR
 0263 CDBB03    	CALL	ERXIT
 0266 2B2B46494C	DB	'++FILE MAKE ERROR$'
                ;PRINT AN ENTRY
 0278 0E0B      ENTRY	MVI	C,CONST	;CK STATUS OF KB
 027A CD0500    	CALL	BDOS	;ANY KEY PRESSED?
 027D 3D        	DCR	A
 027E CAC103    	JZ	ABORT	;YES, ABORT
 0281 2A7504    	LHLD	NEXTT	;GET ORDER TABLE POINTER
 0284 5E        	MOV	E,M	;GET LO ADDR
 0285 23        	INX	H
 0286 56        	MOV	D,M	;GET HI ADDR
 0287 23        	INX	H
 0288 227504    	SHLD	NEXTT	;SAVE UPDATED TABLE POINTER
                ; MOD #5
 028B 210B00    	LXI	H,0BH
 028E 19        	DAD	D
 028F 7E        	MOV	A,M
 0290 327704    	STA	NEWONE
 0293 EB        	XCHG		;TABLE ENTRY TO HL
 0294 3A7B04    	LDA	FILESW
 0297 FE44      	CPI	'D'
 0299 CC7503    	CZ	ADDSUB
 029C 3A7B04    	LDA	FILESW
 029F FE4D      	CPI	'M'
 02A1 F5        	PUSH	PSW
 02A2 CC7503    	CZ	ADDSUB
 02A5 F1        	POP	PSW
 02A6 CC8E03    	CZ	ADDSUB2
 02A9 0608      	MVI	B,8	;FILE NAME LENGTH
 02AB CD9D03    	CALL	TYPEIT	;TYPE FILENAME
 02AE CD1904    	CALL	PERIOD	;SPACE AFTER FN
 02B1 0603      	MVI	B,3	;GET THE FILETYPE
 02B3 CD9D03    	CALL	TYPEIT
                ;MOD #6
 02B6 3A7B04    	LDA	FILESW
 02B9 FE44      	CPI	'D'
 02BB CC8E03    	CZ	ADDSUB2
 02BE CD2104    	CALL	FILECR
 02C1 7E        	MOV	A,M
 02C2 CD3F03    	CALL	XOB
 02C5 23        	INX	H	;SKIP EXTENT
 02C6 23        	INX	H	;SKIP
 02C7 23        	INX	H	;UNUSED
 02C8 7E        	MOV	A,M	;GET REC COUNT
 02C9 3D        	DCR	A	;FUDGE
 02CA 1F        	RAR		;DIVIDE
 02CB 1F        	RAR		;..BY 8
 02CC 1F        	RAR
 02CD E61F      	ANI	1FH	;DELETE GARBAGE
 02CF 3C        	INR	A	;MAKE RELATIVE TO 1, NOT 0
 02D0 47        	MOV	B,A	;SAVE AS # EXTENTS
 02D1 7E        	MOV	A,M	;RELOAD RECORD COUNT
 02D2 CD3F03    	CALL	XOB	;PRINT RECORD COUNT
 02D5 23        	INX	H	;SKIP RECORD COUNT
 02D6 0E00      	MVI	C,0	;FOR EXTENT SKIP CTL
 02D8 7E        EXTLP	MOV	A,M	;GET EXTENT BYTE
 02D9 B7        	ORA	A	;EMPTY?
 02DA CAEC02    	JZ	ENDEXT	;..YES
 02DD CD4503    	CALL	XO	;..NO, PRINT IT
 02E0 0C        	INR	C	;INCR COUNT
 02E1 79        	MOV	A,C	;TIME TO SPACE?
 02E2 E603      	ANI	3
 02E4 CCAA03    	CZ	SPACE
 02E7 23        	INX	H	;POINT TO NEXT CHR
 02E8 05        	DCR	B	;MORE IN EXTENT?
 02E9 C2D802    	JNZ	EXTLP	;YES
                ;BUMP TOTAL FILE COUNT
 02EC 3A7404    ENDEXT	LDA	NFILE	;GET # FILES
 02EF 3C        	INR	A	;BUMP
 02F0 27        	DAA		;MAKE DECIMAL
 02F1 327404    	STA	NFILE	;SAVE IT BACK
 02F4 CDAF03    	CALL	CR	;END, TYPE C/R
                ;SEE IF MORE ENTRIES
 02F7 3A7804    	LDA	COUNT
 02FA 3D        	DCR	A
 02FB 327804    	STA	COUNT
 02FE C27802    	JNZ	ENTRY	;YES, MORE
                ; MOD #7
 0301 3A7B04    	LDA	FILESW
 0304 FE20      	CPI	' '
 0306 CA0E03    	JZ	NXT1
 0309 3E46      	MVI	A,'F'
 030B 327B04    	STA	FILESW
                ;ALL DONE - PRINT # FILES
 030E 3A7404    NXT1:	LDA	NFILE
 0311 CD3F03    	CALL	XOB
 0314 113903    	LXI	D,NMSG
 0317 CD7003    	CALL	WRCON
                ;CLOSE FILE IF NECESSARY
 031A 3A7B04    	LDA	FILESW
                ; MOD #8
                ;	CPI	'F'
                ;	JNZ	EXIT
 031D FE20      	CPI	' '
 031F CAC603    	JZ	EXIT
 0322 AF        	XRA	A
 0323 327704    	STA	NEWONE
                ;
 0326 3E1A      	MVI	A,'Z'-40H ;EOF CHAR
 0328 CDCB03    	CALL	FILCHR	;WRITE IT
 032B CDF103    	CALL	WRSEC	;WRITE FINAL SECTOR
 032E 117E04    	LXI	D,MYFCB
 0331 0E10      	MVI	C,FCLOSE
 0333 CD0500    	CALL	BDOS
 0336 C3C603    	JMP	EXIT
 0339 46494C4553NMSG	DB	'FILES$'
                ;HEX OUTPUT W/BLANK
 033F CD4503    XOB	CALL	XO
 0342 C3AA03    	JMP	SPACE
                ;HEX OUTPUT 
 0345 F5        XO	PUSH	PSW	;SAVE CHAR
 0346 1F        	RAR
 0347 1F        	RAR
 0348 1F        	RAR
 0349 1F        	RAR
 034A CD4E03    	CALL	NIBBL	;PRINT LEFT NIBBLE
 034D F1        	POP	PSW	;GET VALUE BACK
 034E E60F      NIBBL	ANI	0FH	;ISOLATE NIBBLE
 0350 FE0A      	CPI	10	;NUMBER?
 0352 DA5703    	JC	XNUM	;YES
 0355 C607      	ADI	7	;FUDGE ALPHA HEX
 0357 C630      XNUM	ADI	'0'	;MAKE PRINTABLE
                ;TYPE CHAR IN A
 0359 C5        TYPE	PUSH	B
 035A D5        	PUSH	D
 035B E5        	PUSH	H
 035C 5F        	MOV	E,A
                ;MOD #9
 035D 0E02      	MVI	C,WRCHR
 035F 3A7B04    	LDA	FILESW
 0362 FE46      	CPI	'F'
 0364 CA6903    	JZ	NXT2
 0367 FE20      	CPI	' '
 0369 CC0500    NXT2	CZ	BDOS
 036C E1        	POP	H
 036D D1        	POP 	D
 036E C1        	POP	B
 036F C9        	RET
 0370 0E09      WRCON	MVI	C,PRINT
 0372 C30500    	JMP	BDOS
                ; MOD #10
 0375 3E24      ADDSUB	MVI	A,'$'
 0377 CDCB03    	CALL	L03B7
 037A 3E31      	MVI	A,'1'
 037C CDCB03    	CALL	L03B7
 037F 3E20      	MVI	A,' '
 0381 CDCE03    	CALL	L03BA
 0384 3E24      	MVI	A,'$'
 0386 CDCB03    	CALL	L03B7
 0389 3E32      	MVI	A,'2'
 038B C3CB03    	JMP	L03B7
 038E 3E20      ADDSUB2 MVI	A,' '
 0390 CDCE03    	CALL	L03BA
 0393 3E24      	MVI	A,'$'
 0395 CDCB03    	CALL	L03B7
 0398 3E33      	MVI	A,'3'
 039A C3CB03    	JMP	L03B7
                ;
 039D 7E        TYPEIT	MOV	A,M
 039E CDCB03    	CALL	FILCHR	;TO DISK IF REQ'D
 03A1 CD5903    	CALL	TYPE
 03A4 23        	INX	H
 03A5 05        	DCR	B
 03A6 C29D03    	JNZ	TYPEIT
 03A9 C9        	RET
 03AA 3E20      SPACE	MVI	A,' '
 03AC C35903    	JMP	TYPE
 03AF 3E0D      CR	MVI	A,0DH
 03B1 CD5903    	CALL	TYPE
 03B4 3E0A      	MVI	A,0AH
 03B6 CD5903    	CALL	TYPE
 03B9 C9        	RET
                ;CR	MVI	E,13	;PRINT
                ;	MVI	C,2	;C/R
                ;	CALL	BDOS
                ;	MVI	E,10	;LF
                ;	MVI	C,2
                ;	JMP	BDOS
 03BA           TEMP	DS	1	;SAVE DIR ENTRY
                ;ERROR EXIT
 03BB D1        ERXIT	POP	D	;GET MSG
 03BC 0E09      	MVI	C,PRINT
 03BE C3C303    	JMP	CALLB	;PRINT MSG, EXIT
                ;ABORT - READ CHAR ENTERED
 03C1 0E01      ABORT	MVI	C,RDCHR
 03C3 CD0500    CALLB	CALL	BDOS	;DELETE THE CHAR
                ;FALL INTO EXIT
                ;EXIT - ALL DONE , RESTORE STACK
 03C6 2A7204    EXIT	LHLD	STACK	;GET OLD STACK
 03C9 F9        	SPHL		;MOVE TO STACK
 03CA C9        	RET		;..AND RETURN
                ;ROUTINES FOR CREATING FILE
                ;
                ; MOD #11
                ;WRITE CHAR IN A TO FILE
                ;(SAVES ALL REGS INCLUDING A)
                L03B7:		;
 03CB FE20      FILCHR	CPI	' '
 03CD C8        	RZ		;DON'T WRITE BLANKS
 03CE F5        L03BA:	PUSH	PSW
 03CF 3A7B04    	LDA	FILESW	;WRITING A FILE?
                ;	CPI	'F'
                ;	JNZ	NOFILE
 03D2 FE20      	CPI	' '
 03D4 CAEF03    	JZ	NOFILE
 03D7 3A7704    	LDA	NEWONE
 03DA B7        	ORA	A
 03DB C2EF03    	JNZ	NOFILE
                ;
 03DE F1        	POP	PSW	;GET CHAR
 03DF F5        	PUSH	PSW	;SAVE IT BACK
 03E0 E5        	PUSH	H
 03E1 2A7C04    	LHLD	BUFAD	;CURRENT BUFFER ADDR
 03E4 77        	MOV	M,A
 03E5 23        	INX	H
 03E6 227C04    	SHLD	BUFAD
 03E9 7C        	MOV	A,H	;SEE IF FULL BUFF
 03EA 3D        	DCR	A
 03EB CCF103    	CZ	WRSEC	;YES, WRITE SECTOR
 03EE E1        	POP	H
 03EF F1        NOFILE	POP	PSW	;RESTORE CHAR
 03F0 C9        	RET
                ;WRITE A SECTOR
 03F1 C5        WRSEC	PUSH	B
 03F2 D5        	PUSH	D
 03F3 117E04    	LXI	D,MYFCB
 03F6 0E15      	MVI	C,FWRTE
 03F8 CD0500    	CALL	BDOS
 03FB B7        	ORA	A
 03FC CA1004    	JZ	WROK
 03FF CDBB03    	CALL	ERXIT
 0402 2B2B575249	DB	'++WRITE ERROR$'
 0410 218000    WROK	LXI	H,80H	;START OF BUFF
 0413 227C04    	SHLD	BUFAD
 0416 D1        	POP	D
 0417 C1        	POP	B
 0418 C9        	RET
                ;TYPE A PERIOD INTO THE FILE
 0419 3E2E      PERIOD	MVI	A,'.'	;GET PERIOD
 041B CDCB03    	CALL	FILCHR	;WRITE TO FILE
 041E C3AA03    	JMP	SPACE
                ;WRITE CR/LF INTO FILE
 0421 3E0D      FILECR	MVI	A,13
 0423 CDCB03    	CALL	FILCHR
 0426 3E0A      	MVI	A,10
 0428 CDCB03    	CALL	FILCHR
 042B C3AA03    	JMP	SPACE
                ;COMPARE ROUTINE FOR SORT
 042E E5        COMPR	PUSH	H	;SAVE TABLE ADDR
 042F 5E        	MOV	E,M	;LOAD LO
 0430 23        	INX	H
 0431 56        	MOV	D,M	;LOAD HI
 0432 23        	INX	H
 0433 4E        	MOV	C,M
 0434 23        	INX	H
 0435 46        	MOV	B,M
                ;BC, DE NOW POINT TO ENTRIES TO BE COMPARED
 0436 EB        	XCHG
 0437 0A        CMPLP	LDAX	B
 0438 BE        	CMP	M
 0439 23        	INX	H
 043A 03        	INX	B
 043B CA3704    	JZ	CMPLP
 043E E1        	POP	H
 043F C9        	RET		;COND CODE TELLS ALL
                ;SWAP ENTRIES IN THE ORDER TABLE
 0440 3E01      SWAP	MVI	A,1
 0442 327A04    	STA	SWITCH	;SHOW A SWAP WAS MADE
 0445 4E        	MOV	C,M
 0446 23        	INX	H
 0447 E5        	PUSH	H	;SAVE TABLE ADDR+1
 0448 46        	MOV	B,M
 0449 23        	INX	H
 044A 5E        	MOV	E,M
 044B 71        	MOV	M,C
 044C 23        	INX	H
 044D 56        	MOV	D,M
 044E 70        	MOV	M,B
 044F E1        	POP	H
 0450 72        	MOV	M,D
 0451 2B        	DCX	H	;BACK POINTER TO CORRECT LOC'N
 0452 73        	MOV	M,E
 0453 C9        	RET
 0454           	DS	30	;STACK AREA
 0472           STACK	DS	2	;SAVE OLD STACK HERE
 0474 00        NFILE	DB	0	;NUMBER OF FILES PRINTED
                ;
                ; BDOS EQUATES
                ;
 0001 =         RDCHR	EQU	1	;READ CHAR FROM CONSOLE
 0002 =         WRCHR	EQU	2	;WRITE CHR TO CONSOLE
 0009 =         PRINT	EQU	9	;PRINT CONSOLE BUFF
 000B =         CONST	EQU	11	;CHECK CONS STAT
 000F =         FOPEN	EQU	15	;0FFH=NOT FOUND
 0010 =         FCLOSE	EQU	16	;   "	"
 0011 =         FSRCHF	EQU	17	;   "	"
 0012 =         FSRCHN	EQU	18	;   "	"
 0013 =         ERASE	EQU	19	;NO RET CODE
 0014 =         FREAD	EQU	20	;0=OK, 1=EOF
 0015 =         FWRTE	EQU	21	;0=OK, 1=ERR, 2=?, 255=NO DIR SPC
 0016 =         FMAKE	EQU	22	;255=BAD
 0017 =         FREN	EQU	23	;255=BAD
 001A =         FDMA	EQU	26
 0005 =         BDOS	EQU	5
 0000 =         REBOOT	EQU	0
 0475 9F08      NEXTT	DW	TABLE	;NEXT TABLE ENTRY
 0477           NEWONE	DS	1	;******I THINK
 0478 00        COUNT	DB	0	;ENTRY COUNT
 0479 00        SCOUNT	DB	0	;# TO SORT
 047A 00        SWITCH	DB	0	;SWAP SWITCH FOR SORT
 047B           FILESW	DS	1	;'F' IF WRITING FILE
 047C 8000      BUFAD	DW	80H	;OUTPUT ADDR
 047E 004E414D45MYFCB	DB	0,'NAMES   SUB',0
 048B           	DS	19
 049E 00        	DB	0
                ;MODIFIED TABLE SIZE FOR 512 DIRECTORY ENTRIES
 049F           ORDER	DS	1024	;ORDER TABLE
 089F =         TABLE	EQU	$	;READ ENTRIES IN HERE
 089F           	END	100H
